<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        var a=7>8;//false
        var b=17>2;//true
        var c=a&&b;
        // console.log(c);


        // 逻辑运算符，也称之为短路运算符
        //&& 与，并且，如果第一个为假就返回第一个表达式，否则返回第二个表达式
        console.log(true&&false);//false
        console.log(true&&true);//true
        console.log(false&&false);//false
        console.log("aaa"&&23);//23
        console.log(0&&"ccc");//0
        console.log(78&&NaN);//NaN

        //||或，或者 如果第一个为真就返回第一个表达式，否则返回第二个表达式
        // console.log(true||false);
        // console.log(false||false);
        // console.log(false||true);
        console.log("aaa"||true);//aaa
        console.log(0||89);//89
        console.log(NaN||undefined);//undefined

        // 结论：只要是非0数字表示为真，只要是非空字符串表示为真
        // 0、""空字符、undefined、null、NaN表示为假
        
        //!非，取反
        var aa=19;
        console.log(!aa);
        var bb="aaa";
        console.log(!bb);
        var cc=0;
        console.log(!cc);
        // 运算的优先级：! > && > ||
        console.log("aaa"||"bbb"&&0);//aaa
        console.log(78&&"ttt"||false);//ttt
        console.log(!"aaa"||true&&78);// 78
        console.log("ccc"||true&&false);//ccc
        console.log(!false&&78||"ddd");//78
        console.log(""&&"ccc"||!0);//true
        /* 运算符的优先级：
            1.小括号
            2.算术运算符(先乘除后加减)
            3.比较运算符
            4.逻辑运算符(!>&&>||)!优先于算术运算符  
        */
    </script>
</head>
<body>
    
</body>
</html>